package com.ruoyi.merchant.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商家收支明细对象 merchant_financial_flow
 * 
 * @author ruoyi
 * @date 2025-10-23
 */
public class MerchantFinancialFlow extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 流水ID */
    @Excel(name = "流水ID")
    private String flowId;

    /** 流水号 */
    @Excel(name = "流水号")
    private String flowNo;

    /** 商家ID */
    @Excel(name = "商家ID")
    private String merchantId;

    /** 流水类型 */
    @Excel(name = "流水类型")
    private Long flowType;

    /** 业务类型 */
    @Excel(name = "业务类型")
    private Long businessType;

    /** 关联订单ID */
    @Excel(name = "关联订单ID")
    private String relatedOrderId;

    /** 关联活动ID */
    @Excel(name = "关联活动ID")
    private String relatedActivityId;

    /** 金额 */
    @Excel(name = "金额")
    private BigDecimal amount;

    /** 变动前余额 */
    @Excel(name = "变动前余额")
    private BigDecimal balanceBefore;

    /** 变动后余额 */
    @Excel(name = "变动后余额")
    private BigDecimal balanceAfter;

    /** 平台佣金 */
    @Excel(name = "平台佣金")
    private BigDecimal commissionAmount;

    /** 实际到账金额 */
    @Excel(name = "实际到账金额")
    private BigDecimal actualAmount;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private Long paymentMethod;

    /** 提现银行卡ID */
    @Excel(name = "提现银行卡ID")
    private String withdrawalCardId;

    /** 提现状态 */
    @Excel(name = "提现状态")
    private Long withdrawalStatus;

    /** 第三方交易流水号 */
    @Excel(name = "第三方交易流水号")
    private String transactionId;

    /** 操作人类型 */
    @Excel(name = "操作人类型")
    private Long operatorType;

    /** 操作人ID */
    @Excel(name = "操作人ID")
    private String operatorId;

    /** 操作人姓名 */
    @Excel(name = "操作人姓名")
    private String operatorName;

    /** 审核状态 */
    @Excel(name = "审核状态")
    private Long reviewStatus;

    /** 审核人ID */
    @Excel(name = "审核人ID")
    private String reviewBy;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date reviewAt;

    /** 审核备注 */
    @Excel(name = "审核备注")
    private String reviewRemark;

    /** 结算日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settlementDate;

    /** 结算时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settledAt;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 删除时间（软删除） */
    @Excel(name = "删除时间", readConverterExp = "软=删除")
    private Date deletedAt;

    public void setFlowId(String flowId) 
    {
        this.flowId = flowId;
    }

    public String getFlowId() 
    {
        return flowId;
    }

    public void setFlowNo(String flowNo) 
    {
        this.flowNo = flowNo;
    }

    public String getFlowNo() 
    {
        return flowNo;
    }

    public void setMerchantId(String merchantId) 
    {
        this.merchantId = merchantId;
    }

    public String getMerchantId() 
    {
        return merchantId;
    }

    public void setFlowType(Long flowType) 
    {
        this.flowType = flowType;
    }

    public Long getFlowType() 
    {
        return flowType;
    }

    public void setBusinessType(Long businessType) 
    {
        this.businessType = businessType;
    }

    public Long getBusinessType() 
    {
        return businessType;
    }

    public void setRelatedOrderId(String relatedOrderId) 
    {
        this.relatedOrderId = relatedOrderId;
    }

    public String getRelatedOrderId() 
    {
        return relatedOrderId;
    }

    public void setRelatedActivityId(String relatedActivityId) 
    {
        this.relatedActivityId = relatedActivityId;
    }

    public String getRelatedActivityId() 
    {
        return relatedActivityId;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setBalanceBefore(BigDecimal balanceBefore) 
    {
        this.balanceBefore = balanceBefore;
    }

    public BigDecimal getBalanceBefore() 
    {
        return balanceBefore;
    }

    public void setBalanceAfter(BigDecimal balanceAfter) 
    {
        this.balanceAfter = balanceAfter;
    }

    public BigDecimal getBalanceAfter() 
    {
        return balanceAfter;
    }

    public void setCommissionAmount(BigDecimal commissionAmount) 
    {
        this.commissionAmount = commissionAmount;
    }

    public BigDecimal getCommissionAmount() 
    {
        return commissionAmount;
    }

    public void setActualAmount(BigDecimal actualAmount) 
    {
        this.actualAmount = actualAmount;
    }

    public BigDecimal getActualAmount() 
    {
        return actualAmount;
    }

    public void setPaymentMethod(Long paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public Long getPaymentMethod() 
    {
        return paymentMethod;
    }

    public void setWithdrawalCardId(String withdrawalCardId) 
    {
        this.withdrawalCardId = withdrawalCardId;
    }

    public String getWithdrawalCardId() 
    {
        return withdrawalCardId;
    }

    public void setWithdrawalStatus(Long withdrawalStatus) 
    {
        this.withdrawalStatus = withdrawalStatus;
    }

    public Long getWithdrawalStatus() 
    {
        return withdrawalStatus;
    }

    public void setTransactionId(String transactionId) 
    {
        this.transactionId = transactionId;
    }

    public String getTransactionId() 
    {
        return transactionId;
    }

    public void setOperatorType(Long operatorType) 
    {
        this.operatorType = operatorType;
    }

    public Long getOperatorType() 
    {
        return operatorType;
    }

    public void setOperatorId(String operatorId) 
    {
        this.operatorId = operatorId;
    }

    public String getOperatorId() 
    {
        return operatorId;
    }

    public void setOperatorName(String operatorName) 
    {
        this.operatorName = operatorName;
    }

    public String getOperatorName() 
    {
        return operatorName;
    }

    public void setReviewStatus(Long reviewStatus) 
    {
        this.reviewStatus = reviewStatus;
    }

    public Long getReviewStatus() 
    {
        return reviewStatus;
    }

    public void setReviewBy(String reviewBy) 
    {
        this.reviewBy = reviewBy;
    }

    public String getReviewBy() 
    {
        return reviewBy;
    }

    public void setReviewAt(Date reviewAt) 
    {
        this.reviewAt = reviewAt;
    }

    public Date getReviewAt() 
    {
        return reviewAt;
    }

    public void setReviewRemark(String reviewRemark) 
    {
        this.reviewRemark = reviewRemark;
    }

    public String getReviewRemark() 
    {
        return reviewRemark;
    }

    public void setSettlementDate(Date settlementDate) 
    {
        this.settlementDate = settlementDate;
    }

    public Date getSettlementDate() 
    {
        return settlementDate;
    }

    public void setSettledAt(Date settledAt) 
    {
        this.settledAt = settledAt;
    }

    public Date getSettledAt() 
    {
        return settledAt;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setDeletedAt(Date deletedAt) 
    {
        this.deletedAt = deletedAt;
    }

    public Date getDeletedAt() 
    {
        return deletedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("flowId", getFlowId())
            .append("flowNo", getFlowNo())
            .append("merchantId", getMerchantId())
            .append("flowType", getFlowType())
            .append("businessType", getBusinessType())
            .append("relatedOrderId", getRelatedOrderId())
            .append("relatedActivityId", getRelatedActivityId())
            .append("amount", getAmount())
            .append("balanceBefore", getBalanceBefore())
            .append("balanceAfter", getBalanceAfter())
            .append("commissionAmount", getCommissionAmount())
            .append("actualAmount", getActualAmount())
            .append("paymentMethod", getPaymentMethod())
            .append("withdrawalCardId", getWithdrawalCardId())
            .append("withdrawalStatus", getWithdrawalStatus())
            .append("transactionId", getTransactionId())
            .append("remark", getRemark())
            .append("operatorType", getOperatorType())
            .append("operatorId", getOperatorId())
            .append("operatorName", getOperatorName())
            .append("reviewStatus", getReviewStatus())
            .append("reviewBy", getReviewBy())
            .append("reviewAt", getReviewAt())
            .append("reviewRemark", getReviewRemark())
            .append("settlementDate", getSettlementDate())
            .append("settledAt", getSettledAt())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("deletedAt", getDeletedAt())
            .toString();
    }
}
